#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/wait.h>

int main()
{
    pid_t pid = fork();
    if(pid < 0)
    {
        perror("fork failed");
        exit(1);
    }

    if(pid == 0)
    {
         // 打开输出文件
         int fd = open("out.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
         if(fd < 0)
         {
             perror("open failed");
             exit(1);
         }

         // 重定向 stdout 到 out.txt
         if(dup2(fd, STDOUT_FILENO) < 0)
         {
             perror("dup2 failed");
             exit(1);
         }

         // 准备 exec 参数：echo hello
         char* args[] = {"echo", "hello", NULL};

         // 执行 echo
         execvp(args[0], args);

         // 如果 execvp 失败
         perror("execvp failed");
         exit(1);
     }
         // 父进程等待子进程
     else
     {
         wait(NULL);
     }
     return 0;
}

